学习笔记21 MySQL准备(三)3.25 | 您所在的位置:网站首页 › mysql dual 查询多行 › 学习笔记21 MySQL准备(三)3.25 |
===这一节主要讲了以下部分: 一、合并查询的union和union all 两者都是简单的将两个表合并,后者还会将重复行保留。 二、子查询 有三种,分别是from where和exists(4.23 第4节 合并查询4.1 union这个操作语句用于合并两个或多个select语句的结果集,并且消除重复行。 注意,union内部的select语句必须有着相同数量的列,并且数据类型相似,同时select语句中的列的顺序也必须一致。 ==这里union的用处还是合并两个查询,让两个查询的结果集一起显示。 这里非常完整的讲解了表的创建 然后通过insert into的方式将这些数据放到表中,数据如下 这个时候我们希望将两个表的数据连接起来,使用select将两个表中两个不同的列给抽取并连接起来。这里用的时左右外连接。 选择的列数必须相同;所选列的数据必须相同的数据类型;列的名称不必相同;null值不会被忽略。 4.2 union all运算符用两个select语句将结果组合起来,重复行也会包含,运算符所要遵循的原则与union一致。 上述代码用union all 替换了union之后就会变成如下结果 ==两者的区别就是包不包含重复行 区别: 1 重复值:union在进行表连接后会筛选掉重复的记录,而union all不会。 2 union all只是简单的将两个结果合并后就返回。 3 执行效率上union all会更快 第5节 子查询5.1 子查询是什么 一条sql语句查询的结果作为另一条sql语句的一部分。 子查询必须放在小括号里面 子查询的常见分类: 1where :将子查询的结果作为父查询的比较条件 2 from :将子查询的结果提供给父层查询 3 exists:子查询的结果是单列多行,类似一个数组,父层使用in函数,包含子查询结果。 ==感觉平时用的最多的还是from 5.2 子查询结果作为查询条件 需求1 通过子查询,查询价格最高的商品信息 之间将问题拆解,先找到最高价格,然后据此去找商品信息,这里并没有在第一步就找对应商品,而是找价格。 需求2 查询化妆品分类下商品名称,商品价格 同需求1一样,首先找到化妆品的分类信息,依据这个再去找其他信息 需求3 查询小于平均价格商品信息 先找出平均价格。 5.3 子查询的结果作为一张表 需求1 查询商品中,价格大于500的商品信息,包括 商品名称 商品价格 商品所属分类名称 这里其实简单的使用内连接就可以解决了,这里还用了子查询。不过得注意,当子查询变成一张表的时候,必须起别名,否则无法访问。 5.4 子查询结果是单列多行 子查询的结果类似一个数组, 父层查询使用 IN 函数 ,包含子查询的结果 需求1 查询价格小于两千的商品,来自于哪些分类(名称) 但是直接这样使用会报错,因为子查询的结果是一个区间,这时候把where那里的=改成in就可以了。 需求2 查询家电类 与 鞋服类下面的全部商品信息 5.5 子查询总结 子查询如果查出的是一个字段(单列), 那就在where后面作为条件使用. 单行是=,多行是in 子查询如果查询出的是多个字段(多列), 就当做一张表使用(要起别名) 第6节 牛刀小试(汽车新零售)一,涉及业务介绍 某头部汽车新零售企业立足下沉市场,通过网络渠道和品牌广告获取大量汽车销售线索,并借助大量地面销售在线下门店完成客户成交孵化,该企业最终依靠自建供应链建立的护城河来赚取采购差价,同时也通过给客户提供低首付金融租赁产品来赚取金融费用(车贷)。该公司商业分析师需要从数据层面去驱动投放团队去做效率优化,以助力业务正常健康发展。 二,涉及业务数据及字典 clue_day是线索表 order_day是订单成交表 三,需求确认 1.需求1:查询线索(二级渠道jdsc)后续转化成交车型详情 先要对需求进行解析:其实就是看一下二级渠道jdsc,它下面线索成交时,客户买的时啥车型。 结合数据表分析: 线索和渠道在clue表中;购买车型在order表中 需要进行clue表和order表的关联查询(使用内连接进行关联查询) 条件:二级渠道jdsc 返回结果:线索id ,线索所属渠道名称,购买车型 下面用两种连接方式解决 1 隐式内连接 2 显式内连接 需求2 统计所有渠道(按照二级渠道)的转化率 需求3 查询各城市线索数并计算所有城市线索总数 需求4 找出优质渠道,做重点投入 我们对于优质渠道(以二级渠道来说)的定义: 1 该二级渠道内平均转化周期< 整体平均转化周期 2 该二级渠道的线索量 > 各二级渠道平均线索量 解析: with as 的用法(扩展):如果一整句查询中多个子查询都需要使用同一个子查询的结果,那 么我们就就建议用with,将共用的子查询用简写表示出来。 |
CopyRight 2018-2019 实验室设备网 版权所有 |